//C11.15:randwalk.cpp -- using the Vector class
// compile with the vect.cpp file
#include <iostream>
#include <cstdlib>    // rand(), srand() prototypes
#include <ctime>      // time() prototype
#include "vect.h"

int main(void)
{
    using namespace std;
    using VECTOR::Vector;
    srand(time(0));    // seed random number generator
    double direction;
    Vector step;
    Vector result(0.0, 0.0);
    unsigned long steps = 0;
    double target;
    double dstep;
    cout << "Enter target distance (q to quit): ";
    while(cin >> target)
    {
        cout << "Enter step length: ";
        if(!(cin >> dstep))
        {
            break;
        }
        while(result.magval() < target)
        {
            direction = rand() % 360;
            step.reset(dstep, direction, Vector::POL);
            result = result + step;
            steps++;
        }
        cout << "After " << steps << " steps, the subject "
             "has the follwing location:\n";
        cout << result << '\n';
        result.polar_mode();

        cout << " or\n" << result << '\n';
        cout << "Average outward distance per step = "
             << result.magval()/steps << '\n';
        steps = 0;
        result.reset(0.0, 0.0);
        cout << "Enter target distance (q to quit): ";     
    }
    cout << "Bye!\n";
    cin.clear();
    while(cin.get() != '\n')
    {
        continue;
    }
}